package com.ziyueyuwen.xiniao.dao;

import com.ziyueyuwen.xiniao.bean.product.ZyCouponDO;
import com.ziyueyuwen.xiniao.enums.CouponStatusEnum;
import org.apache.ibatis.annotations.Param;

import java.util.List;

import static com.ziyueyuwen.xiniao.util.ConstUtil.KEY_COUPON_STATUS;
import static com.ziyueyuwen.xiniao.util.ConstUtil.KEY_QUERY_DATA;

/**
 * @author jun 2019/2/23
 */
public interface ZyCouponMapper {
    /**
     * 添加优惠码
     *
     * @param zyCouponDO ZyCouponDO
     * @return Boolean
     */
    Boolean add(ZyCouponDO zyCouponDO);

    /**
     * 删除优惠码
     *
     * @param id Integer
     * @return Boolean
     */
    Boolean delete(Integer id);

    /**
     * 管理员查询优惠码
     *
     * @param couponStatus CouponStatusEnum
     * @param queryData    String
     * @return List<ZyCouponDO>
     */
    List<ZyCouponDO> listByManager(@Param(KEY_COUPON_STATUS) CouponStatusEnum couponStatus,
                                   @Param(KEY_QUERY_DATA) String queryData);

    /**
     * 用户获取所有验证码
     *
     * @param userAccount String
     * @return List<ZyCouponDO>
     */
    List<ZyCouponDO> listByUser(String userAccount);

    /**
     * 用户获取可用且面值最大的验证码
     *
     * @param userAccount String
     * @return ZyCouponDO
     */
    ZyCouponDO getByUser(String userAccount);

    /**
     * 使用优惠券
     *
     * @param id Integer
     * @return Boolean
     */
    Boolean usedCoupon(Integer id);

    /**
     * @param id Integer
     * @return ZyCouponDO
     */
    ZyCouponDO getById(Integer id);

    /**
     * 优惠码恢复使用
     *
     * @param id Integer
     * @return Boolean
     */
    Boolean enableUse(Integer id);


}
